/**
 * 文件：ItemElement.java
 * 包名：com.ronri.list.editview;   --- 正式发布时需要修正
 * 标题：列表编辑Item基类
 * 说明：对应每个ListView中每行的Item对象，这里处理不同类型的基类
 * 作者：MS During
 * 日期：2017-04-10
 * 历史：
 */
package com.ronri.list.editview;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

import com.cz.nongyetongv5.R;
import com.ronri.list.editview.controls.BaseControl;

import java.util.ArrayList;
import java.util.List;



/***
 * ItemElement基类
 */
public abstract class AbstractItemElement
        implements InterfaceItemElement {

    public String ControlName = "defaultView";

    // 句柄
    private Context _context;

    // 布局器
    private LayoutInflater _linearLayout;

    // 布局ID
    protected int layoutid = R.layout.velement;

    /***
     * 标题
     */
    protected String Title = "";

    /***
     * 信息
     */
    protected String Info = "";

    /***
     * 左边图片
     */
    protected Drawable LeftImage = null;

    /***
     * 右边图片
     */
    protected Drawable RightImage = null;

    /***
     * 字段名称
     */
    protected String FieldName = "";

    /***
     * 字段对应的值
     */
    protected String Value = "";

    /***
     * 当前状态
     */
    protected boolean Status = false;

    /***
     * 当前多种状态
     */
    private int _mStatus = -1;

    /***
     * 是否有孩子
     */
    private boolean _mhasChildren = false;

    /***
     * 子集信息
     */
    public List<AbstractItemElement> Childrens = new ArrayList<AbstractItemElement>();

    /***
     * 当前Item绑定的控件
     */
    public BaseControl Control;

    /***
     * 构造函数
     *
     * @param context      句柄
     * @param szTitle      标题
     * @param szInfo       信息
     * @param dLeftImage  左边图标
     * @param dRightImage 右边图标
     * @param szFieldName  字段名称
     * @param szValue      字段值
     * @param bStatus      状态
     */
    public AbstractItemElement(
            Context context,
            String szTitle,
            String szInfo,
            Drawable dLeftImage,
            Drawable dRightImage,
            String szFieldName,
            String szValue,
            boolean bStatus) {

        _context = context;

        Title = szTitle;
        Info = szInfo;
        LeftImage = dLeftImage;
        RightImage = dRightImage;
        FieldName = szFieldName;
        Value = szValue;
        Status = bStatus;

        //　添加布局加载器
        _linearLayout = LayoutInflater.from(context);
    }

    public void setInfo(String szInfo)
    {
        Info = szInfo;
    }
    /***
     * 返回当前控件的名称
     * @return
     */
    public String getControlName(){
        return ControlName;
    }

    /***
     * 返回当前标题
     * @return
     */
    public String getTitle(){
        return Title;
    }

    /***
     * 获取当前信息
     * @return
     */
    public String getInfo(){
        return Info;
    }
//
//    public Object getValue(){
//
//
//    }

    /***
     * 创建默认View，也就是通用的标题、图标、信息+右边图标
     * @param parent
     * @return
     */
    public View CreateView(ViewGroup parent) {

        // 创建布局
        View vReturn = _linearLayout.inflate(layoutid, null);

        return vReturn;
    }

    /***
     * 已题名的方式返回字符串
     * @return
     */
    @Override
    public String toString() {
        String szReturn = Title;

        return szReturn;
    }

    /***
     * 设置当前状态
     * @param status
     */
    public void setOK(int status){
        _mStatus = status;
    }

    /***
     * 数据是否已经处理完毕
     * @return
     */
    public int IsOK(){
        return _mStatus;
    }

    /***
     * 返回句柄
     * @return
     */
    public Context getContext(){
        return _context;
    }

    /***
     * 是否有孩子
     * @return
     */
    public boolean hasChildren(){return _mhasChildren;};

    /***
     * 执行输入控制
     */
    public void Excute(){
        Toast.makeText(_context, "我是基类，请配置对应执行关系！", Toast.LENGTH_SHORT);
    }
}
